Component Objects: C Nested Structures
C interface
implementations comprise data structures nested within the object s data
structure. Each interface structure contains a VTBL pointer as its first member
(pVtbl), a pointer to the object (pCObj), and a count of the
external references to the interface (m_RefCount). The order of the
members in the interface structures is identical, to facilitate code sharing.
typedef struct CObj {
ULONG m_ObjRefCount;
LPSTORAGE m_pStg;
LPOLEOBJECT m_pOleObj;
struct
CDOC *
m_pCDoc;
struct
InterfaceA {
LPVTBL pVtbl;
struct
CObj *
pCObj;
ULONG m_RefCount;
}
m_InterfaceA;
struct
InterfaceB {
LPVTBL pVtbl;
struct
Obj *
pCObj;
ULONG m_RefCount;
}
m_InterfaceB;
} COBJ;